/**
 * PositionAnnouncementTriggerの単体テストを含むクラス
 */
@isTest
private class PositionAnnouncementTriggerTestClass {
	//verifyPost：募集職種のStatus項目がOpen/Approvedに変更されたらば、Chatterにメッセージがポストされるか確認
	//TODO: verifyPostという名前のtestメソッドを作成
	//TODO: メソッドのボディ部分で PositionAnnouncementTriggerを呼び出す
	//TODO:   5-3.TestPositionAnnouncment.txtで実行した文章（5-3の演習ではアノニマスから実行していました。）

	 static testmethod void verifyPost() {	
		List<Position__c> openApprovedPositions = new List<Position__c>();
		 
		User hiringManager = [SELECT id, name FROM User u Where u.people_manager__c=true][0];   
		
		Integer startCountFeedPosts =[Select count() From CollaborationGroupFeed where parentId in (select id from CollaborationGroup where name='All Universal Containers')];
		
		System.debug(' Chatterへの投稿数【募集職種登録前】: ' + startCountFeedPosts);    
		
		// 20件の募集職種を作成
		for (Integer i = 1; i <=20; i++) {
			openApprovedPositions.add(new Position__c(name='募集職種（テストNo.'+ i + '）'
									, hiring_manager__c=hiringManager.id
									, Job_Description__c='テスト用募集職種'
									, status__c='Open'
									, sub_status__c='Approved'));
		}
		Database.insert(openApprovedPositions);
		
		Integer endCountFeedPosts = [Select count() From CollaborationGroupFeed where parentId in (select id from CollaborationGroup where name='All Universal Containers')];
		System.debug(' Chatterへの投稿数【募集職種登録後】: ' + endCountFeedPosts);    
		
		// Chatterへの投稿は20件増えているはず
		System.assertEquals(startCountFeedPosts + 20, endCountFeedPosts);
	}

	//verifyNotPost: 募集職種のStatus項目がOpen/Approvedでない場合はChatterにメッセージがポストされないことを確認
	//TODO: verifyNotPostという名前でTestメソッドを作成、Open/Approvedではない場合はポストされないない内容で作成
	 static testmethod void verifyNotPost() {	
		List<Position__c> openApprovedPositions = new List<Position__c>();
		 
		User hiringManager = [SELECT id, name FROM User u Where u.people_manager__c=true][0];   
		
		Integer startCountFeedPosts =[Select count() From CollaborationGroupFeed where parentId in (select id from CollaborationGroup where name='All Universal Containers')];
		
		System.debug(' Chatterへの投稿数【募集職種登録前】: ' + startCountFeedPosts);    
		
		// 20件の募集職種を作成
		for (Integer i = 1; i <=20; i++) {
			openApprovedPositions.add(new Position__c(name='募集職種（Open-Pending No.'+ i + '）'
									, hiring_manager__c=hiringManager.id
									, Job_Description__c='テスト用募集職種'
									, status__c='Open'
									, sub_status__c='Pending'));
		}
		Database.insert(openApprovedPositions);
		
		Integer endCountFeedPosts = [Select count() From CollaborationGroupFeed where parentId in (select id from CollaborationGroup where name='All Universal Containers')];
		System.debug(' Chatterへの投稿数【募集職種登録後】: ' + endCountFeedPosts);    
		
		// Chatterへの投稿は変わらないはず
		System.assertEquals(startCountFeedPosts, endCountFeedPosts);
	}

}